The present invention relates generally to scheduling in a packet buffering network. More specifically, the present invention is directed to a method and apparatus for scheduling flows of packets in a credit-based scheduling system, using an approach that divides the task into two main functions: sorting; and scheduling. The two main functions are then assigned to separate but related operational blocks. By dividing the operation into these functions and operational blocks, the scheduling operation can be enhanced.
Digital packet networks transport bundles or packets of digital information from an origin to a destination over a suitable data transmission medium. Typically, such networks incorporate routing hardware and/or software to direct the packets through the network. Such routing operations often rely upon telecommunication switches which receive input data along multiple ports and then transfer this data out along multiple output ports using what is commonly referred to as a switch fabric.
Known switch fabrics with crossbar architectures exist where data cells received on the multiple input ports of the switch are sent to the various output ports of the switch. Scheduling techniques ensure that the data cells received from different input ports are not sent to the same output port at the same time. These techniques determine the temporary connections between input ports and output ports, via the switch fabric, for a given time slot.
Scheduling techniques can be evaluated based on a number of performance requirements to a broad range of applications. Such performance requirements can include, for example, operating at a high speed, providing a high throughput (i.e., scheduling the routing of as many data cells as possible for each time slot), guaranteeing quality of service (QoS) for specific users, and being easily implemented in hardware. Known scheduling techniques trade one or more performance areas for other performance areas.
Scheduling systems have been created around the concept of buffering input data at respective input port queues and then assigning an input port queue to an output port queue based on credits assigned to or accumulated by data packets, where the credits may be assigned according to certain rules relating to latency within an input queue.
All four of the U.S. patent applications incorporated herein by reference above describe different techniques available for assigning credits or creating switching priorities for data packets in a given switching fabric. The entirety of the disclosures of these patent applications are hereby incorporated by reference.
FIG. 1 illustrates a system block diagram of a switch, according to an embodiment of the present invention. Switch fabric 100 includes crossbar switch 110, input ports 120, output ports 130 and scheduler 140. Crossbar switch 110 is connected to input posts 120 and output pods 130. Scheduler 140 is coupled to crossbar switch 110, input ports 120 and output ports 130.
As shown for the top-most input ports 120 of FIG. 1, each input port 120 has a set of queues 121 into which packets received at the input port are buffered. More specifically, each queue in the set of queues 121 is a virtual output queue (VOQ) uniquely associated with a specific output port 130. Thus, received packets (each designating a particular destination output port) are buffered in the appropriate VOQ for its destination output port.
In general, as packets are received at the input ports 120, they are subsequently routed to the appropriate output port 130 by the crossbar switch 110. Of course, packets received at different input ports 120 and destined for the same output port 130 can experience contention within the crossbar switch 110. Scheduler 140 resolves such contention, as discussed below, based on an arbitration (or scheduling) process.
Scheduler 140 uses a priority assignment scheme. In one example the assignment scheme supports rate provisioning. Using the priority assignment scheme, scheduler 140 is capable of supporting quality of service (QoS) and traffic management in the network to which switch 100 is connected (not shown). In addition, scheduler 140 can provide a high throughput in the switch fabric.
Generally speaking, scheduler 140 performs three steps during the arbitration process: generating requests, generating grants and generating accepts. The patent applications described above provide details for examples of how grant and accept decisions may be affected by weighing or credit schemes that take into account the priority of a given input port to output port connection based on factors such as latency.
In other words, a given input port 120 can be associated with a set of links across crossbar switch 110, whereby the given input port 120 could possibly be connected to a set of output ports 130 (e.g., every output port 130) where a link can be considered a potential path across the crossbar switch between an input port and an output port. For a given time slot an input port will be connected to only one output port via one of these “links.” Similarly, a given output port 130 is associated with a separate set of links across crossbar switch 110, whereby the given output port 130 can be connected to a set of input ports 120 (e.g., every input port 120). Scheduler 140 can be configured so that, for example, a particular link will have a higher priority than other links. In the prior applications, this is done using credit values or weights.
FIG. 2 illustrates a typical arrangement in which the scheduling mechanism includes a plurality of arbitrators. In this example, each input port is associated with a grant arbitrator 210. The grant arbitrator for a given input port receives the requests for the various input buffer queues associated with that port and then selects one based on the priority scheme in place. The grant arbitrators for the various input ports work in parallel. The result is the selection by a given grant arbitrator of a link (i.e., which output port) for the associated input port for the selected time slot. Because the arbitrators work in parallel, it is possible that two or more grant arbitrators may select the same output port as the desired destination. Thus, a second arbitration process is necessary at the output port side. This process is executed by accept arbitrators 220. In the illustrated example, there is an accept arbitrator for each output port. Each accept arbitrator receives information about those potential links to the associated output port. The accept arbitrator operates to select that one of the “granted” links for a given output port which should be “accepted”. This accept arbitrator can also use a weighting or credit based scheme as described in the prior applications cited and incorporated above.
The known credit-based or token systems can be effective arrangements for controlling the flow of data packets across the switch fabric. In these schemes each flow has a dynamic credit value and the flow with the highest credit value is typically granted and accepted. The credit value can be based on a number of factors including the number of backlogged packets for that flow, a guaranteed rate for that flow deadlines associated with the packets or some combination of these or other criteria. However, these arrangements require the execution of the algorithms and logic which can be complex. The more complex the weighting or priority system, the more potential for an adverse impact on the execution of the scheduling task itself.
It would be beneficial to provide an arrangement that improves upon the execution of the scheduling task without being overly burdened by the priority or credit assignment scheme of interest.